package com.mage.util;

import freemarker.template.Configuration;
import freemarker.template.Template;

import java.io.File;
import java.io.FileWriter;
import java.util.Map;

public class FreemarkerUtil {

    /**
     * 封装一个generate()方法
     * @param templateName 模板名称，不需要后缀
     * @param dataModel 数据model
     * @param templateDir 模板位置
     * @param targetDir 输出目录
     * @throws Exception
     */
    public static void generate(String templateName, Map<String, Object> dataModel,
                         String templateDir, String targetDir)
            throws Exception {

        // 第一步：创建一个Configuration对象，直接new一个对象。构造方法的参数就是freemarker对于的版本号。
        Configuration configuration = new Configuration(Configuration.VERSION_2_3_28);
        // 第二步：设置模板文件所在的路径。
        configuration.setDirectoryForTemplateLoading(new File(templateDir));
        // 第三步：设置模板文件使用的字符集。一般就是utf-8.
        configuration.setDefaultEncoding("utf-8");
        // 第四步：加载一个模板，创建一个模板对象。
        Template template = configuration.getTemplate(String.format("%s.ftl",
                templateName));
        // 第六步：创建一个Writer对象，一般创建一FileWriter对象，指定生成的文件名。
        FileWriter out =  new FileWriter(new File(String.format("%s/%s.html",
                targetDir, templateName)));
        // 第七步：调用模板对象的process方法输出文件。
        template.process(dataModel, out);
        // 第八步：关闭流。
        out.close();
    }

}
